home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
monitory
/
resanalyzer
/
manual
next >
Wrap
Text File
|
1992-06-14
|
13KB
|
346 lines
ResAnalyzer v2.2
© 1992 By Silvio Umberto Zanzi
Via Agostino Gemelli 9
40026 Imola (BO) - Italy
IDCMP BBS (300-14400 HST)
Imola Direct Communication Message Port
Tel. +39/(0)542/25983
FidoNet.........2:332/405
AmigaNet.......39:102/300
AmigaNet.......39:102/302
NeST...........90:8002/0
NeST...........90:8002/100
NeST...........90:8002/101
/\/\/\/\/\/\/\/\/\/\/\
....CopyRight Notice )
\/\/\/\/\/\/\/\/\/\/\/
ResAnalyzer is a ShareWare product, it means that you can copy and
redistribute it freely, the only restriction is that you should send me $20 if
you find the program useful.
Comments, suggestions and bug reports are welcomed.
The author makes no warranties for damages generated by a wrong use of
ResAnalyzer 2.2.
/\/\/\/\/\/\/\/\/\/\/\
........Introduction )
\/\/\/\/\/\/\/\/\/\/\/
ResAnalyzer is a resident modules monitor, its main purpose is to show every
information related to them.
Who tried to scan the resident modules subsystem was forced, until now, to
use the incomplete ResModules options in generic monitors like Xoper, Exector,
ARTM, ecc.
With the help of ResAnalyzer it is now possible to obtain a global view of resident
modules subsystem, catching all the necessary info in an easy, schematic and
fast way.
ResAnalyzer is a great help to everyone who develops resident modules, as a
matter of fact it is easier to verify if your own Resident module has been
installed and if it has the parameters that you've set.
Users not interested in programming can verify if that strange module is the
new virus unknown to every virus killer or if a program has "silently"
installed Resident modules.
/\/\/\/\/\/\/\/\/\/\/\
........Installation )
\/\/\/\/\/\/\/\/\/\/\/
ResAnalyzer doesn't require special installation procedures, you have only to
click its icon from workbench or type its name from shell.
ResAnalyzer under KickStart 1.2/1.3 does not show such a fast text, that's
because the ROM text rendering routines are very slowly.
In order to solve this problem you can use BlitzFonts by Hayes C. Haugen or
FF by Charlie Heath from Microsmiths.
BlitzFonts is in Fish Disks 60 or in any good BBS, FF is in the WorkBench 1.3
disk.
Using KickStart 2.04 those utilities become useless because the rendering
routines are faster than in the older version.
ResAnalyzer recognizes if you're using a NTSC system and adapts itself
accordingly, the shell process from wich you launched ResAnalyzer is free, it
doesn't take CPU ticks if you leave it in background and adapts itself to 80
columns if you launch it from a 60 columns environment.
ResAnalyzer works well on every Amiga model produced until now (April 1992)
and on every operative system version equal to, or higher than, 1.2. On
operative system 2.04 ResAnalyzer will work without any problems and will
adapt itself according to the new desktop.
I've worked hard to make this program comfortable, efficient and standard, I
hope that ResAnalyzer will be spread worldwide.
/\/\/\/\/\/\/\/\/\/\/\
..............Theory )
\/\/\/\/\/\/\/\/\/\/\/
The programming of Resident modules isn't very easy, the first problem is to
find adeguate information and obtain a global vision.
Unfortunately it isn't easy to find specific articles in tech magazines and
Rom Kernels 1.3 are not a great help (the information is lost in various
places over the two volumes), so the best way of learning this subject is the
direct experimentation.
There are mainly two methods to run a custom routine after the reset.
1) Loading a pointer in a Capture
2) Using a Resident structure
The table bellow shows the methods used by some programs.
Name Author Method
------------------------------------------------------------------
Guardian v1.1 © Leonardo Fei 2
Pseudo-Ops Virus Protector © Pseudo-Ops 2
Virus Slayer © The Band 1
Protec III © Bowie Softworks 2
Aspro © Dr Debug 1,2
Rom Crack © SCA 1
RAD v1.0 © Commodore-Amiga 2
RRAM Disk © B. Dayley & Other Guys 2
Privilege Handler © John Veldthuis 2
SCA virus 1
Byte Bandit virus 1
EDV (BGS9) virus 2
HCS II virus 1
Pentagon Circle virus 1
16 Bit Crew virus 1
BackFlash virus 1
WarHawk virus 1
NorthStar 1 (anti)virus 1
NorthStar 2 (anti)virus 1
Phantasmumble virus 1
Graffiti virus 1
UltraFox virus 1
The two methods are explained below, in the option section.
/\/\/\/\/\/\/\/\/\/\/\
.............Options )
\/\/\/\/\/\/\/\/\/\/\/
The ResAnalyzer functions are activable by a mouse click over the relevant
gadgets or pressing the equivalents functions keys between F1 to F6.
Pressing anytime the F10 key you can activate the iconify, to quit you can use
the close gadget or the ESC key.
Captures
========
Captures are three variables in the ExecBase structure, defined as:
SysBase->ColdCapture
SysBase->CoolCapture
SysBase->WarmCapture
Those variables are scanned, according to the above sequence , in different
Amiga startup moments.
Usually they are set to zero, but an expert user can insert a pointer to a
custom routine.
In this evenience, after the reset, will be executed the user routine first,
once finished , the system will continue the standard startup procedure.
The pointers present in CoolCapture and WarnCapture are kept after various
reset, ColdCapture which is resetd every time.
The captures option shows these pointers and allow the user to eventually
reset them.
KickMemPtr
==========
This variable, defined as SysBase->KickMemPtr, contains a pointer to the first
RAM ResModule MemList structure.
The MemList structure contains a MemEntry structure, there you can find useful
information about the Resident memory chunk specifics and a pointer to a
Resident structure.
There is also a Node structure with it, so it's possible to know if there are
other linked MemList structures.
The system uses this list to determine which memory blocks must be protected,
so no program will be able to use the memory you alloched for your ResModule.
This list is kept after the reset.
The ResAnalyzer option shows some useful information like the start and final
code location and its lenght.
KickTagPtr
==========
This variable, defined as SysBase->KickTagPtr, contains an array chain.
Every time you insert a new module in the system (with a Resident structure),
a new pointer is added to the list pointed by KickTagPtr.
In order to obtain the next chain element, you have to consider the value
pointed by the last pointer, to scan if the bit 31 is set, and in this case
reset it.
The resulting value is the pointer to next element.
This chain tells the system what the modules that an user have installed in
memory are, and it is used for the modules launch after the reset.
ResAnalyzer shows every module present in the chain.
KickChkSum
==========
This variable, defined as SysBase->KickCheckSum, is needed by the system to
verify if, at the reset, all module codes are safe.
This control consists of a resident structure and code checksum with a
comparation of the value present in SysBase->KickCheckSum.
If the values are different, the system ignores the installed modules, this
because the modules would be corrupted by a program fault.
This variable must be recalculated with the Exec function SumKickData() each
time a programmer install a new Resident module.
ResAnalyzer allows to reset SysBase->KickChkSum, in this way you deactivate
every module, it's interesting that some modules can be reactivated without
problems after several reset.
ResAnalyzer checks that the SumKickData() function is not patched by other
programs, in this case the use of this function becomes unreliable (think of a
virus that changes the SumKickData() code)
ResModules
==========
This option shows all the SysBase->ResModules array elements present in the
system.
Each element is a pointer to a Resident structure.
struct Resident
{
UWORD rt_MatchWord;
struct Resident *rt_MatchTag;
APTR rt_EndSkip;
UBYTE rt_Flags;
UBYTE rt_Version;
UBYTE rt_Type;
BYTE rt_Pri;
char *rt_Name;
char *rt_IdString;
APTR rt_Init;
};
ResAnalyzer shows all highly significative structure parameters of the RAM
modules (underlined by a "»»") and the ROM ones.
Normally there are 23 modules in version 1.2, version 1.3 has got a new
module, the private library romboot.
rt_InitCode is a pointer to the routine code start, rt_Pri is used to sort the
array in a high-to-low list, at reset time the highest priority module will be
executed first, and then the lower one, and so on.
The rt_Type describes the kind of module, it can be a library, a device, a
resource, a task, an unknown (an unclassifiable module), etc.
rt_IdString is a message that the programmer has written inside the Resident
module, usually the creation date and the version.
rt_Flags describe the ResModule modality, the flags are four:
Flag K.S. minimum
-----------------------------------------
RTF_AUTOINIT 1.2
RTF_COLDSTART 1.2
RTF_AFTERDOS 2.0
RTF_SINGLETASK 2.0
The flags, introduced in KS version 1.2, specify how the module has to be
initialized.
If the module flag is set to RTF_COLDSTART, the system calls the InitCode()
function, this functions calls InitResident().
If the flag RTF_AUTOINIT is not set, InitResident() calls the code pointed by
the rt_Init field, otherwise it's called the MakeLirary() function.
In this case, the location pointed by rt_Init will not contain an executible
code, but some data that MakeLibrary() will use to create a library, a device
or a resource.
The system scans the rt_flags field to understand if it has to call
AddLibray(), AddDevice() or AddResource().
The meaning of the 2.04 flags are unknown at the moment, I only know that
RTF_AFTERDOS indicates a module with a priority lower than -100 and
RTF_SINGLETASK indicates modules with SysBase->thisTask=0.
The ResModule you install will be added in ResModule array only after the
reset.
In order to see the next or the previous page, you have to use the cursor
keys.
Pressing the P key, ResAnalyzer will redirect to PRT: the complete ResModules
list, the Captures pointers, KickTagPtr and KickMemPtr pointers.
Informartion
============
This option shows some personal greetings and the computer status, such as the
KickStart version, the processor configuration, the vertical blank and power
frequency (NTSC 60Hz, PAL 50Hz) and if the ECS is present.
/\/\/\/\/\/\/\/\/\/\/\
.......Compatibility )
\/\/\/\/\/\/\/\/\/\/\/
ResAnalyzer was succesfully tested on:
- Amiga 500 normal
- Amiga 500 1Mega Chip
- Amiga 1000 768K
- Amiga 2000 normal
- Amiga 2000 68030+68881
- Amiga 3000 25MHz-100Mb
- KickStart: 1.2 - 1.3 - 2.0ß - 2.0
- Processor: 68000 - 68010 - 68030 - [68881 - 68882]
/\/\/\/\/\/\/\/\/\/\/\
......Considerations )
\/\/\/\/\/\/\/\/\/\/\/
Everything I've exposed in this manual and I've coded in ResAnalyzer, has been
learnt after hours of experiments and faults in a few documented Amiga
sub-system.
If you find that this manual or ResAnalyzer presents some error, please
contact me via any media (the best way would be the FidoNode 2:332/405, IDCMP
BBS where I am SysOp), I'd like to create a more complete and useful version.
At last I want to thank those people whose suggestions were fundamental in
ResAnalyzer developing:
Giorgio Terzi
Nic Wilson
Marco Mariani
GianMario Sartini
Luigi Mongardi
Luigi Callegari
Luca Spada
Michele Masiero
Romano Tenca
Giammarco Giovannelli
Mario Mure'
Barbara, Ylenia & Daniela
The AMY_DEV.ITA FidoNet area
I'd like to thank those people too, without whom I would not have become a
FidoNet SysOp.
Giuseppe Selvatici
Marco Baldini
Paolo Marchi
Marcello Ardini
Mario Battacchi
Andrea Mennini
Antonio Pasini
A particular thank to Karl H. Riesen, the first (and the only person) that
sent me a contribution.
It would not be this new version without his moral support.
Thankyou Karl!
Final note:
I know, my English is horrible!